Dynamic strength loading per movement

ABSTRACT

Dynamic strength loading per movement includes determining progress within a given state of an exercise. It further includes controlling, as a function of the progress within the given state of the exercise, a force generated by a motor of an exercise machine.

CROSS REFERENCE TO OTHER APPLICATIONS

This application claims priority to U.S. Provisional Patent ApplicationNo. 63/028,281 entitled DYNAMIC STRENGTH LOADING PER MOVEMENT filed May21, 2020 which is incorporated herein by reference for all purposes.

BACKGROUND OF THE INVENTION

Strength training, also referred to as resistance training or weightlifting, is an important part of any fitness routine. It promotes thebuilding of muscle, the burning of fat, and improvement of a number ofmetabolic factors including insulin sensitivity and lipid levels. Manyusers seek a more efficient and safe method of strength training.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1A illustrates an embodiment of an exercise machine.

FIG. 1B illustrates a front view of one embodiment of an exercisemachine.

FIG. 2 illustrates an embodiment of a system for dynamic loading.

FIG. 3A illustrates an embodiment of a state diagram for repetitionphases of movements that begin at the top of a range of motion.

FIG. 3B illustrates an embodiment of a state diagram for repetitionphases of movements that begin at the bottom of a range of motion.

FIG. 4A illustrates an embodiment of an ascending load curve profile.

FIG. 4B illustrates an embodiment of a descending load curve profile.

FIG. 4C illustrates an embodiment of a mid-peak load curve profile.

FIG. 4D illustrates an embodiment of a flat load curve profile.

FIG. 5 illustrates an embodiment of an application of a load forisometric exercise.

FIG. 6 illustrates an embodiment of user accommodation in repetitions.

FIG. 7 illustrates an embodiment of user accommodation in repetitions.

FIG. 8 is a flow diagram illustrating an embodiment of a process fordynamic loading.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess; an apparatus; a system; a composition of matter; a computerprogram product embodied on a computer readable storage medium; and/or aprocessor, such as a processor configured to execute instructions storedon and/or provided by a memory coupled to the processor. In thisspecification, these implementations, or any other form that theinvention may take, may be referred to as techniques. In general, theorder of the steps of disclosed processes may be altered within thescope of the invention. Unless stated otherwise, a component such as aprocessor or a memory described as being configured to perform a taskmay be implemented as a general component that is temporarily configuredto perform the task at a given time or a specific component that ismanufactured to perform the task. As used herein, the term ‘processor’refers to one or more devices, circuits, and/or processing coresconfigured to process data, such as computer program instructions.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example and theinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

For a user, benefits from weight lifting depend greatly on execution ofthe exercise, including but not limited to: form comprising movementpath/pattern, intensity comprising amount of weight/resistance, tempocomprising how fast/slow is the movement, number of sets/repetitions,and timing comprising how long to wait between repetitions and sets.Furthermore, improvements in strength and efficacy are found when theuser exercising is pushed to and beyond failure; the point at which theymay no longer lift the weight and must go through recovery allowing themuscle to rebuild itself stronger.

A number of additional techniques exist to strengthen a user further.Important ones include the use of concentric, eccentric, and isometrictraining. Concentric movements are when muscles contract under load, forexample, using a bicep muscle to initiate lifting a weight. Isometricmovements are when a muscle remains stable or at the same position underload, for example, once the bicep muscle has lifted the weight,isometric movement is holding the weight in place. Eccentric is when amuscle lengthens under load, for example, using a bicep muscle to resistgravity as the weight is being lowered back down.

Collectively, factors including form, intensity, tempo, number ofsets/repetitions, timing, concentric movements, isometric movements, andeccentric movements are termed “protocols.” Traditionally, mostresistance training involves symmetric concentric and eccentric loads,such that the same amount of weight is used in both directions. Forexample, a user may lift a weight and then resist gravity under the sameweight load when lowering it.

Exercise protocols exist that rely on asymmetric movements, includingpure concentric, pure eccentric, and/or blended asymmetricconcentric-eccentric movements. The term “concentric loading” is usedwhen the concentric phase has more weight applied to it than theeccentric phase. The term “eccentric loading” is used when the eccentricphase has more weight applied to it than the concentric phase. Theseprotocols, and many variants on them, for example, mixtures ofconcentric-isometric-eccentric combinations, as well as plyometricexplosive movements, are well known to any person having ordinary skillin the art. There are communities of users who value asymmetricprotocols for health and efficient training. Users engage in strengthtraining not only to strengthen/build muscles, but also the connectivetissue such as tendons around the muscles. Eccentric loading has beenshown to build tendon more effectively, particularly in the presence oftendinopathy.

In practice actually achieving asymmetric protocols is challenging. Aphysical weight such as a dumbbell cannot spontaneously change in weightwithout violating the laws of physics. Hence, achieving a protocol suchas eccentric loading is difficult, where the weight on the eccentricphase is heavier than the concentric phase. A user may try to usemakeshift solutions such as elastic bands, stepstools, and/or a seconduser to address asymmetry, but a user must also maintain proper form andproper timing in order to reap a full benefit from asymmetric protocolswhich is challenging with makeshift solutions.

One aspect of strength training is that a user's body may be thought ofas a function of levers and pulleys, with muscles creating levers acrosstheir joints. As a result of their physiology, the body has a naturallyvarying strength throughout the range of motion of any particular move.As one example, when performing a squat exercise, a user is at theirweakest point at the bottom of the squat, which impacts their mobility(since their body may not be receptive to being in that position), andis one reason why users often do not go all the way down when performinga squat. Conversely, as the user is moving up, they become stronger andstronger, and are able to exert greater or increasing amounts of force.At the top of the squat movement, the user is at their strongest. Thisexample of a user's strength curve or profile when performing a squat issimilar for other movements as well.

Another aspect to strength training is that humans are different fromeach other. For example, each muscle as moved through its range ofmotion has an optimal length at which point it achieves peak tension,that is, it is at its strongest. Plotted on an X-Y axis as a“muscle-tension curve,” the X axis plots position on range of motion,and the Y axis plots tension. There is a point on the muscle-tensioncurve where tension peaks. This point of optimal length differs fromperson to person depending on individual DNA, environment, strength,and/or conditioning levels.

Furthermore, a muscle's ability to withstand tension/strength changes asa user fatigues throughout a workout session, such that the shape of themuscle-tension curve changes over time. Having a user move a weight thatprovides a fixed amount of tension throughout the range of motion issub-optimal when considering that a muscle's ability to withstandtension varies through its range of motion because the muscle-tensioncurve is not a flat line. Furthermore, a muscle-tension curve differsfor concentric, isometric, and eccentric movements.

Described herein are techniques for dynamic loading. Using the dynamicloading techniques described herein, the load that is provided to a userduring strength training may be dynamically varied to match a user'sstrength at different points in the range of motion of performing anexercise. For example, using the techniques described herein, the loadprovided by a strength training machine may be dynamically adjusted tomatch the varying strength of a user throughout execution of arepetition of a movement (e.g., increase the load when the user isstronger, and decrease the load when the user is weaker).

Using the dynamic loading techniques described herein (also referred toherein as a “smart flex” mode), resistance may be added and subtractedthroughout each repetition's range of motion to match an athlete'sstrength at each position in the range of motion for a given movement.At different points during the range of motion, the body, as a result ofbeing a series of levers, gains and loses mechanical advantage. Thus,the human movement has at least four naturally occurring strengthcurves. By varying the resistance as a function of the range of motionand phase (e.g., concentric and eccentric) according to the appropriatestrength curve for the movement being performed, the disclosed dynamicloading techniques described herein may match the body's strength andmaximize the effectiveness of every repetition, challenging the musclesat each point and increasing the total volume lifted. The result isbetter and faster results for users.

Thus, as will be shown in the embodiments and examples described herein,the dynamic loading techniques described herein provide variousbenefits. For example, using the dynamic loading techniques describedherein, the effectiveness of a workout is improved. For example, auser's muscles are challenged throughout their range of motion. Incontrast, if dynamic loading such as that described herein were not used(e.g., when using free weights), the user would be limited by theirweakest point. For example, in the case of a squat, when usingtraditional free weights, the weight would have to be selected to be lowenough that the user is able to move from the bottom of their squat andfinish their repetition. However, that means for the second half of therepetition, the weight would be too low for the user, and their muscleswill not be challenged. This is wasteful, as the user is not beingforced to lift as much weight as they are able to (that is, theremainder of the repetition is too easy for the user, and they are notbeing challenged). Using the dynamic loading techniques describedherein, the load provided by the exercise machine may be adjusted tomatch the user's change in strength throughout performance of the squatso that they are challenged at every point of the move.

The dynamic loading techniques described herein also provide a form ofsafety. In the example of traditional free weights, if a user wished tochallenge themselves and chose a higher weight for when they arestrongest at the top of the exercise (where the weight would have toremain fixed throughout the exercise), the user would potentially be atrisk of being stuck at the bottom of their movement. Using the dynamicloading techniques described herein, the load may be dynamicallyadjusted such that it is lowest at the bottom of the movement, and canbe increased as the user rises. In this way, the user need notcompromise and select a load that is too low for some parts of thesquat, but too high for other parts of the squat, or vice versa.

In some embodiments, dynamic loading includes sensing progress of anexercise within a given state of the exercise. It further includescontrolling the force generated by a motor as a function of the progresswithin the given state of the exercise.

For illustrative purposes, embodiments of dynamic loading when using adigital strength training exercise machine are described. The techniquesfor dynamic loading described herein may be variously adapted toaccommodate any other type of exercise machine, such as other cableresistance exercise machines, as appropriate.

Example Digital Strength Trainer

FIG. 1A illustrates an embodiment of an exercise machine. In particular,the exercise machine of FIG. 1A is an example of a digital strengthtraining machine. In some embodiments, a digital strength trainer useselectricity to generate tension/resistance. Examples of electronicresistance include using an electromagnetic field to generatetension/resistance, using an electronic motor to generatetension/resistance, and using a three-phase brushless direct-current(BLDC) motor to generate tension/resistance. In various embodiments, theform detection and feedback techniques described herein may be variouslyadapted to accommodate other types of exercise machines using differenttypes of load elements without limitation, such as exercise machinesbased on pneumatic cylinders, springs, weights, flexing nylon rods,elastics, pneumatics, hydraulics, and/or friction.

Such a digital strength trainer using electricity to generatetension/resistance is also versatile by way of using dynamic resistance,such that tension/resistance may be changed nearly instantaneously. Whentension is coupled to position of a user against their range of motion,the digital strength trainer may apply arbitrary applied tension curves,both in terms of position and in terms of phase of the movement:concentric, eccentric, and/or isometric. Furthermore, the shape of thesecurves may be changed continuously and/or in response to events; thetension may be controlled continuously as a function of a number ofinternal and external variables including position and phase, and theresulting applied tension curve may be pre-determined and/or adjustedcontinuously in real time.

The example exercise machine of FIG. 1A includes the following:

a motor controller circuit (1004), which in some embodiments includes aprocessor, inverter, pulse-width-modulator, and/or a Variable FrequencyDrive (VFD);

a motor (1006), for example, a three-phase brushless DC driven by thecontroller circuit (1004). While a single motor is shown in thisexample, other numbers of motors may be used. For example, dual motorsmay be used;

a spool/hub with a cable (1008) wrapped around the spool and coupled tothe spool. On the other end of the cable an actuator (1010) is coupledin order for a user to grip and pull on. Examples of actuators includehandles and bars that are attached to the cables. The actuators may beattached to the cables at distal ends of the arms of the exercisemachine, which are described in further detail below. The spool iscoupled to the motor (1006) either directly or via ashaft/belt/chain/gear mechanism;

a filter (1002), to digitally control the controller circuit (1004)based on receiving information from the cable (1008) and/or actuator(1010);

optionally (not shown in FIG. 1A) a gearbox between the motor and spool.Gearboxes multiply torque and/or friction, divide speed, and/or splitpower to multiple spools. A number of combinations of motor and gearboxmay also be used. A cable-pulley system may be used in place of agearbox, and/or a dual motor may be used in place of a gearbox;

one or more of the following sensors (not shown in FIG. 1A):

encoders: In various embodiments, encoders are used to measure cablelengths (e.g., left and right cable lengths in this example), cablespeeds, weight (tension), etc.

One example of an encoder is a position encoder; a sensor to measureposition of the actuator (1010) or motor (1006). Examples of positionencoders include a hall effect shaft encoder, grey-code encoder on themotor/spool/cable (1008), an accelerometer in the actuator/handle(1010), optical sensors, position measurement sensors/methods builtdirectly into the motor (1006), and/or optical encoders. In oneembodiment, an optical encoder is used with an encoding pattern thatuses phase to determine direction associated with the low resolutionencoder. As another example, a magnetic encoder is used to determinecable position/length. Other mechanisms that measure back-EMF (backelectromagnetic force) from the motor (1006) in order to calculateposition may also be used;

a motor power sensor; a sensor to measure voltage and/or current beingconsumed by the motor (1006);

a user tension sensor; a torque/tension/strain sensor and/or gauge tomeasure how much tension/force is being applied to the actuator (1010)by the user. In one embodiment, a tension sensor is built into the cable(1008). Alternatively, a strain gauge is built into the motor mountholding the motor (1006). As the user pulls on the actuator (1010), thistranslates into strain on the motor mount which is measured using astrain gauge in a Wheatstone bridge configuration. In anotherembodiment, the cable (1008) is guided through a pulley coupled to aload cell. In another embodiment, a belt coupling the motor (1006) andcable spool or gearbox (1008) is guided through a pulley coupled to aload cell. In another embodiment, the resistance generated by the motor(1006) is characterized based on the voltage, current, or frequencyinput to the motor.

Another example of sensors includes inertial measurement units (IMUs).In some embodiments, IMUs are used to measure the acceleration and rateof rotation of actuators. The IMUs may be embedded within or attached toactuators (e.g., in both handles or as an attachment on a bar).

In some embodiments, an IMU is placed on the cable (e.g., via a clip) todetermine inertial measurements with respect to the cable. As anotherexample, IMUs may be included in a device that clips onto an actuatoraccessory such as a bar handle.

Another example type of sensor used by the exercise machine includescameras.

In some embodiments, the exercise machine includes an embedded camera.

In some embodiments, the exercise machine is communicatively coupled(either in a wired or wireless manner) with a dedicated accessory cameraexternal to the exercise machine that is paired with the exercisemachine. The dedicated accessory camera may be set up in a differentlocation to the exercise machine, such as on an adjacent wall, above theexercise machine on the same wall, on a tripod, etc.

In some embodiments, the exercise machine is paired with an externaldevice that has or is attached to a camera, where such devices includemobile phones, tablets, computers, etc.

Various types of cameras may be used. As one example, RGB cameras areused. As another example, cameras with depth-sensing capability areused.

In some embodiments, infrared cameras are used that measure heat, wherein some embodiments such information is used to deduce quantities suchas muscle exertion, soreness, etc.

In some embodiments, the sensors used by the exercise machine includeaccessories such as smart watches, with which the exercise machine maybe communicatively coupled (e.g., via a wireless connection such asBluetooth or WiFi). The readings from such sensors may then be used tomonitor form.

Other examples of accessories that may be communicatively coupled withthe exercise machine include: smart clothing that measures muscleengagement or movement; and smart mats or smart benches that measurespatial distribution of force when the user is on them.

In some embodiments, the exercise machine includes mechanisms to locatedevices (e.g., actuators, IMUs, etc.) in 3-Dimensional space. As oneexample, Bluetooth Low Energy (BLE) spatial locationing (e.g., Angle ofArrival and Angle of Departure “AoA/AoD”) is used to locate devices in3-D space.

In one embodiment, a three-phase brushless DC motor (1006) is used withthe following:

-   -   a controller circuit (1004) combined with the filter (1002) that        includes:        -   processor that runs software instructions;        -   pulse width modulators (PWMs), each with two channels,            modulated at 20 kHz;        -   six transistors in an H-Bridge configuration coupled to the            three PWMs;        -   optionally, two or three ADCs (Analog to Digital Converters)            monitoring current on the H-Bridge; and/or        -   optionally, two or three ADCs monitoring back-EMF voltage;    -   the three-phase brushless DC motor (1006), which in some        embodiments includes a synchronous-type and/or asynchronous-type        permanent magnet motor, such that:        -   the motor (1006) may be in an “out-runner configuration” as            described below;        -   the motor (1006) may have a maximum torque output of at            least 60 Nm and a maximum speed of at least 300 RPMs;        -   optionally, with an encoder or other method to measure motor            position;    -   a cable (1008) wrapped around the body of the motor (1006) such        that the entire motor (1006) rotates, so the body of the motor        is being used as a cable spool in one embodiment. Thus, the        motor (1006) is directly coupled to a cable (1008) spool. In one        embodiment, the motor (1006) is coupled to a cable spool via a        shaft, gearbox, belt, and/or chain, allowing the diameter of the        motor (1006) and the diameter of the spool to be independent, as        well as introducing a stage to add a set-up or step-down ratio        if desired. Alternatively, the motor (1006) is coupled to two        spools with an apparatus in between to split or share the power        between those two spools. Such an apparatus could include a        differential gearbox, or a pulley configuration; In some        embodiments, the two motors (dual motor configuration) are each        coupled with a respective spool.    -   an actuator (1010) such as a handle, a bar, a strap, or other        accessory connected directly, indirectly, or via a connector        such as a carabiner to the cable (1008).

In some embodiments, the controller circuit (1002, 1004) is programmedto drive the motor in a direction such that it draws the cable (1008)towards the motor (1006). The user pulls on the actuator (1010) coupledto the cable (1008) against the direction of pull of the motor (1006).

One example purpose of this setup is to provide an experience to a usersimilar to using a traditional cable-based strength training machine,where the cable is attached to a weight stack being acted on by gravity.Rather than the user resisting the pull of gravity, they are insteadresisting the pull of the motor (1006).

Note that with a traditional cable-based strength training machine, aweight stack may be moving in two directions: away from the ground ortowards the ground. When a user pulls with sufficient tension, theweight stack rises, and as that user reduces tension, gravity overpowersthe user and the weight stack returns to the ground.

By contrast in a digital strength trainer, there is no actual weightstack. The notion of the weight stack is one modeled by the system. Thephysical embodiment is an actuator (1010) coupled to a cable (1008)coupled to a motor (1006). A “weight moving” is instead translated intoa motor rotating. As the circumference of the spool is known and howfast it is rotating is known, the linear motion of the cable may becalculated to provide an equivalency to the linear motion of a weightstack. Each rotation of the spool equals a linear motion of onecircumference or 2πr for radius r. Likewise, torque of the motor (1006)may be converted into linear force by multiplying it by radius r.

If the virtual/perceived “weight stack” is moving away from the ground,motor (1006) rotates in one direction. If the “weight stack” is movingtowards the ground, motor (1006) rotates in the opposite direction. Notethat the motor (1006) is pulling towards the cable (1008) onto thespool. If the cable (1008) is unspooling, it is because a user hasoverpowered the motor (1006). Thus, note a distinction between thedirection the motor (1006) is pulling, and the direction the motor(1006) is actually turning.

If the controller circuit (1002, 1004) is set to drive the motor (1006)with, for example, a constant torque in the direction that spools thecable, corresponding to the same direction as a weight stack beingpulled towards the ground, then this translates to a specificforce/tension on the cable (1008) and actuator (1010). Referring to thisforce as “Target Tension,” in one embodiment, this force is calculatedas a function of torque multiplied by the radius of the spool that thecable (1008) is wrapped around, accounting for any additional stagessuch as gear boxes or belts that may affect the relationship betweencable tension and torque. If a user pulls on the actuator (1010) withmore force than the Target Tension, then that user overcomes the motor(1006) and the cable (1008) unspools moving towards that user, being thevirtual equivalent of the weight stack rising. However, if that userapplies less tension than the Target Tension, then the motor (1006)overcomes the user and the cable (1008) spools onto and moves towardsthe motor (1006), being the virtual equivalent of the weight stackreturning.

BLDC Motor.

While many motors exist that run in thousands of revolutions per second,an application such as fitness equipment designed for strength traininghas different requirements and is by comparison a low speed, high torquetype application suitable for certain kinds of BLDC motors configuredfor lower speed and higher torque.

In one embodiment, a specification of such a motor (1006) is that acable (1008) wrapped around a spool of a given diameter, directlycoupled to a motor (1006), behaves like a 200 lbs weight stack, with theuser pulling the cable at a maximum linear speed of 62 inches persecond. The aforementioned weight and linear speed specifications arebut examples for illustrative purposes, and the system may be configuredto behave to different specifications. A number of motor parameters maybe calculated based on the diameter of the spool.

TABLE 1 User Requirements Target Weight 200 lbs Target Speed 62inches/sec = 1.5748 meters/sec Requirements by Spool Size Diameter(inches) 3 5 6 7 8 9 RPM 394.7159 236.82954 197.35795 169.1639572148.0184625 131.5719667 Torque (Nm) 67.79 112.9833333 135.58 158.1766667180.7733333 203.37 Circumference (inches) 9.4245 15.7075 18.849 21.990525.132 28.2735Thus, a motor with 67.79 Nm of force and a top speed of 395 RPM, coupledto a spool with a 3 inch diameter meets these requirements.

Hub motors are three-phase permanent magnet BLDC direct drive motors inan “out-runner” configuration: throughout this specification, the“out-runner” configuration refers to the permanent magnets being placedoutside the stator rather than inside, as opposed to many motors whichhave a permanent magnet rotor placed on the inside of the stator as theyare designed more for speed than for torque. Out-runners have themagnets on the outside, allowing for a larger magnet and pole count andare designed for torque over speed. Another way to describe anout-runner configuration is when the shaft is fixed and the body of themotor rotates.

Hub motors also tend to be “pancake style.” As described herein, pancakemotors are higher in diameter and lower in depth than most motors.Pancake style motors are advantageous for a wall mount, subfloor mount,and/or floor mount application where maintaining a low depth isdesirable, such as a piece of fitness equipment to be mounted in aconsumer's home or in an exercise facility/area. As described herein, apancake motor is a motor that has a diameter higher than twice itsdepth. As one example, a pancake motor is between 15 and 60 centimetersin diameter, for example, 22 centimeters in diameter, with a depthbetween 6 and 15 centimeters, for example, a depth of 6.7 centimeters.

Motors may also be “direct drive,” meaning that the motor does notincorporate or require a gear box stage. Many motors are inherently highspeed low torque but incorporate an internal gearbox to gear down themotor to a lower speed with higher torque and may be called gear motors.Direct drive motors may be explicitly called as such to indicate thatthey are not gear motors.

If a motor does not exactly meet the requirements illustrated in thetable above, the ratio between speed and torque may be adjusted by usinggears or belts to adjust. A motor coupled to a 9″ sprocket, coupled viaa belt to a spool coupled to a 4.5″ sprocket doubles the speed andhalves the torque of the motor. Alternately, a 2:1 gear ratio may beused to accomplish the same thing. Likewise, the diameter of the spoolmay be adjusted to accomplish the same.

Alternately, a motor with 100× the speed and 100th the torque may alsobe used with a 100:1 gearbox. As such a gearbox also multiplies thefriction and/or motor inertia by 100×, torque control schemes becomechallenging to design for fitness equipment/strength trainingapplications. Friction may then dominate what a user experiences. Inother applications friction may be present, but is low enough that it iscompensated for, but when it becomes dominant, it is difficult tocontrol for. For these reasons, direct control of motor torque is moreappropriate for fitness equipment/strength training systems. This wouldtypically lead to the selection of an induction type motor for whichdirect control of torque is simple. Although BLDC motors are moredirectly able to control speed and/or motor position rather than torque,torque control of BLDC motors can be made possible when used incombination with an appropriate encoder.

FIG. 1B illustrates a front view of one embodiment of an exercisemachine. In some embodiments, exercise machine 1000 of FIG. 1B is anexample or alternate view of the exercise machine of FIG. 1A. In thisexample, exercise machine (1000) includes a pancake motor (100), atorque controller coupled to the pancake motor, and a high resolutionencoder coupled to the pancake motor (102). As used herein, a “highresolution” encoder refers to an encoder with 30 degrees or greater ofelectrical angle. In this example, two cables (503) and (501) arecoupled respectively to actuators (800) and (801) on one end of thecables. The two cables (503) and (501) are coupled directly orindirectly on the opposite end to the motor (100). While an inductionmotor may be used for motor (100), a BLDC motor may also be used for itscost, size, weight, and performance. In some embodiments, a highresolution encoder assists the system to determine the position of theBLDC motor to control torque. While an example involving a single motoris shown, the exercise machine may include other configurations ofmotors, such as dual motors, with each cable coupled to a respectivemotor.

Sliders (401) and (403) may be respectively used to guide the cable(503) and (501) respectively along rails (405) and (407). The exercisemachine in FIG. 1B translates motor torque into cable tension. As a userpulls on actuators (800) and/or (801), the machine creates/maintainstension on cable (503) and/or (501). The actuators (800, 801) and/orcables (503, 501) may be actuated in tandem or independently of oneanother.

In one embodiment, electronics bay (720) is included and has thenecessary electronics to drive the system. In one embodiment, fan tray(505) is included and has fans that cool the electronics bay (720)and/or motor (100).

Motor (100) is coupled by belt (104) to an encoder (102), an optionalbelt tensioner (103), and a spool assembly (200). In one embodiment,motor (100) is an out-runner, such that the shaft is fixed and the motorbody rotates around that shaft. In one embodiment, motor (100) generatestorque in the counter-clockwise direction facing the machine, as in theexample in FIG. 1B. Motor (100) has teeth compatible with the beltintegrated into the body of the motor along the outer circumference.Referencing an orientation viewing the front of the system, the leftside of the belt (104) is under tension, while the right side of thebelt is slack. The belt tensioner (103) takes up any slack in the belt.An optical rotary encoder (102) coupled to the tensioned side of thebelt (104) captures all motor movement, with significant accuracybecause of the belt tension. In one embodiment, the optical rotaryencoder (102) is a high resolution encoder. In one embodiment, a toothedbelt (104) is used to reduce belt slip. The spools rotatecounter-clockwise as they are spooling cable/taking cable in, andclockwise as they are unspooling/releasing cable out.

Spool assembly (200) comprises a front spool (203), rear spool (205),and belt sprocket (201). The spool assembly (200) couples the belt (104)to the belt sprocket (201), and couples the two cables (503) and (501)respectively with spools (205) and (203). Each of these components ispart of a low profile design. In one embodiment, a dual motorconfiguration not shown in FIG. 1B is used to drive each cable (503) and(501). In the example shown in FIG. 1B, a single motor (100) is used asa single source of tension, with a plurality of gears configured as adifferential are used to allow the two cables/actuators to be operatedindependently or in tandem. In one embodiment, spools (205) and (203)are directly adjacent to sprocket (201), thereby minimizing the profileof the machine in FIG. 1B.

As shown in FIG. 1B, two arms (700, 702), two cables (503, 501) and twospools (205, 203) are useful for users with two hands, and theprinciples disclosed without limitation may be extended to three, four,or more arms (700) for quadrupeds and/or group exercise. In oneembodiment, the plurality of cables (503, 501) and spools (205, 203) aredriven by one sprocket (201), one belt (104), and one motor (100), andso the machine (1000) combines the pairs of devices associated with eachuser hand into a single device. In other embodiments, each arm isassociated with its own motor and spool.

In one embodiment, motor (100) provides constant tension on cables (503)and (501) despite the fact that each of cables (503) and (501) may moveat different speeds. For example, some physical exercises may requireuse of only one cable at a time. For another example, a user may bestronger on one side of their body than another side, causingdifferential speed of movement between cables (503) and (501). In oneembodiment, a device combining dual cables (503) and (501) for a singlebelt (104) and sprocket (201) retains a low profile, in order tomaintain the compact nature of the machine, which can be mounted on awall.

In one embodiment, pancake style motor(s) (100), sprocket(s) (201), andspools (205, 203) are manufactured and arranged in such a way that theyphysically fit together within the same space, thereby maximizingfunctionality while maintaining a low profile.

As shown in FIG. 1B, spools (205) and (203) are respectively coupled tocables (503) and (501) that are wrapped around the spools. The cables(503) and (501) route through the system to actuators (800) and (801),respectively.

The cables (503) and (501) are respectively positioned in part by theuse of “arms” (700) and (702). The arms (700) and (702) provide aframework for which pulleys and/or pivot points may be positioned. Thebase of arm (700) is at arm slider (401) and the base of arm (702) is atarm slider (403).

The cable (503) for a left arm (700) is attached at one end to actuator(800). The cable routes via arm slider (401) where it engages a pulleyas it changes direction, then routes along the axis of rotation of track(405). At the top of rail/track (405), fixed to the frame rather thanthe track, is pulley (303) that orients the cable in the direction ofpulley (300), that further orients the cable (503) in the direction ofspool (205), wherein the cable (503) is wound around spool (205) andattached to spool (205) at the other end.

Similarly, the cable (501) for a right arm (702) is attached at one endto actuator (801). The cable (501) routes via slider (403) where itengages a pulley as it changes direction, then routes along the axis ofrotation of rail/track (407). At the top of the rail/track (407), fixedto the frame rather than the track is pulley (305) that orients thecable in the direction of pulley (301), that further orients the cablein the direction of spool (203), wherein the cable (501) is wound aroundspool (203) and attached to spool (203) at the other end.

One use of pulleys (300, 301) is that they permit the respective cables(503, 501) to engage respective spools (205, 203) “straight on” ratherthan at an angle, wherein “straight on” references being within theplane perpendicular to the axis of rotation of the given spool. If thegiven cable were engaged at an angle, that cable may bunch up on oneside of the given spool rather than being distributed evenly along thegiven spool.

In the example shown in FIG. 1B, pulley (301) is lower than pulley(300). This demonstrates the flexibility of routing cables. In oneembodiment, mounting pulley (301) leaves clearance for certain designaesthetic elements that make the machine appear to be thinner.

In one embodiment, the exercise machine/appliance passes aload/resistance against the user via one or more lines/cables, to agrip(s) (examples of an actuator) that a user displaces to exercise. Agrip may be positioned relative to the user using a load arm and theload path to the user may be steered using pulleys at the load arm ends,as described above. The load arm may be connected to a frame of theexercise machine using a carriage that moves within a track that may beaffixed to the main part of the frame. In one embodiment, the frame isfirmly attached to a rigid structure such as a wall. In someembodiments, the frame is not mounted directly to the wall. Instead, awall bracket is first mounted to the wall, and the frame is attached tothe wall bracket. In other embodiments, the exercise machine is mountedto the floor. The exercise machine may be mounted to both the floor andthe wall for increased stability. In other embodiments, the exercisemachine is a freestanding device.

In some embodiments, the exercise machine includes a media controllerand/or processor, which monitors/measures user performance (for example,using the one or more sensors described above), and determines loads tobe applied to the user's efforts in the resistance unit (e.g., motordescribed above). Without limitation, the media controller and processormay be separate control units or combined in a single package. In someembodiments, the controller is further coupled to a display/acousticchannel that allows instructional information to be presented to a userand with which the user interacts in a visual manner, which includescommunication based on the eye such as video and/or text or icons,and/or an auditory manner, which includes communication based on the earsuch as verbal speech, text-to-speech synthesis, and/or music.Collocated with an information channel is a data channel that passescontrol program information to the processor which generates, forexample, exercise loading schedules. In some embodiments, the display isembedded or incorporated into the exercise machine, but need not be(e.g., the display or screen may be separate from the exercise machine,and may be part of a separate device such as a smartphone, tablet,laptop, etc. that may be communicatively coupled (e.g., either in awired or wireless manner) to the exercise machine). In one embodiment,the display is a large format, surround screen representing a virtualreality/alternate reality environment to the user; a virtual realityand/or alternate reality presentation may also be made using a headset.

In one embodiment, the appliance media controller provides audioinformation that is related to the visual information from a programstore/repository that may be coupled to external devices or transducersto provide the user with an auditory experience that matches the visualexperience. Control instructions that set the operational parameters ofthe resistance unit for controlling the load or resistance for the usermay be embedded with the user information so that the media packageincludes information usable by the controller to run the machine. Inthis way a user may choose an exercise regime and may be provided withcues, visual and auditory as appropriate, that allow, for example, theactions of a personal trainer to be emulated. The controller may furtheremulate the actions of a trainer using an expert system and thus exhibitartificial intelligence. The user may better form a relationship withthe emulated coach or trainer, and this relationship may be encouragedby using emotional/mood cues whose effect may be quantified based onperformance metrics gleaned from exercise records that track userperformance in a feedback loop using, for example, the sensor(s)described above.

FIG. 2 illustrates an embodiment of a system for dynamic loading. Inthis example, exercise machine 202 is an alternate view of the exercisemachine embodiments shown in FIGS. 1A and 1B. As shown in this example,exercise machine 202 also communicates (over a network 204 such as theInternet) with backend 206.

In this example, exercise machine 202 includes exercise processingengine 208, motor controller board 210 (an example of motor controller1004), accessories engine 212, and actuators 214. In some embodiments,these elements are compute/sensor nodes that form a computationarchitecture/stack in which sensor measurements are taken, andcomputations on such sensor measurements are made, at various levels.

In this example, at the bottom level/layer of the stack areactuators/accessories 214, examples of which include handles, barcontrollers, smart mats, etc. In some embodiments, the sensors at thelevel of actuators 214 include IMUs, buttons, force sensors, etc.

At the next level of the computation architecture is accessories engine212. Accessories engine 212 is configured to aggregate sensor data fromthe actuators. As one example, accessories engine 212 is implementedusing the BLE (Bluetooth Low Energy) Central plugin, which communicateswith accessories (e.g., via BLE, USB, RF, etc.). In some embodiments,the accessories engine is configured to determine the positions ofaccessories/actuators in physical space.

At the next level of the computation stack is motor controller board(MCB) 210. MCB 210 is another example of a computation node/layer in thecomputation architecture. In this example, the motor controller boardcollects data such as cable position and speed, motor position andspeed, cable tension, scalable stack information (e.g., health of themotor, board, processor/memory of the board, and communication), etc. Asone example, the motor controller board (MCB) is configured to receiveencoder messages and determine right and left cable lengths. In someembodiments, the MCB provides such sensor readings to sensor dataaggregation engine 216. The information may be sent via a communicationbus such as a USB (Universal Serial Bus). The information may be sentperiodically (e.g., at a frequency of 50 Hz).

In the next layer of the computation architecture is exercise processingengine 208. In some embodiments, exercise processing engine 208 is aportion of an application running on a computing device included orotherwise associated with the exercise machine. As one example, theapplication is an Android application running on a computing device suchas an Android tablet or computing device embedded in the exercisemachine.

In this example, exercise processing engine 208 includes dynamic loadingengine 220, which is configured to dynamically determine a load andcontrol the exercise machine by processing and analyzing sensor data(e.g., from accessories and the MCB), as well as user data stored inuser data store 218 (e.g., user profile, measurements, goals, suggestedweights, etc.), workout data (e.g., current move, load profile for thecurrent move, etc.), camera and microphone information, etc.

As will be described in further detail below, the load to apply isdynamically determined as a function of the progress within a givenstate or phase of an exercise that a user is performing. As will also bedescribed in further detail below, the progress within a state of theexercise is determined based on an analysis of a stream of sensormeasurements.

The next layer of the computation architecture includes backend 206. Inthis example, the backend compute node includes user data store 218,which includes information aggregated from multiple users of multipleexercise machines, and includes, for example, population statistics forall or subsets of users. The user data store also includes data specificto individual users. This includes suggested weights (load/resistance)for the user for various moves. As will be described in further detailbelow, in some embodiments, the suggested weights are used todynamically determine a load to provide to a user. In one embodiment,backend 206 is implemented on Amazon EC2 instances.

As shown in this example, data and data streams, such as sensors anduser information/preferences, are distributed throughout thesystem/computation architecture.

In some embodiments, dynamic loading is performed based on datacollected from multiple sensors. Data may be fused, correlated, oranalyzed at any compute node in a process referred to herein as “sensorfusion.” The sensor data may also be passed through or pushed downwardsto be operated on by various compute nodes in the computation stack.

As one example, suppose that the actuators 214 being used are twohandles. The measurements taken from sensors (e.g., IMUs) in the twohandles are passed to accessories engine 212 of the exercise machine,which aggregates, for example, sensor readings from all actuators. Theactuator sensor data is then passed to exercise processing engine 208.

Sensor information collected by MCB 210 is also passed to sensor dataaggregation engine 216. As shown in this example, sensor dataaggregation engine 216 is configured to collect and aggregate thevarious and disparate sensor information (e.g., IMU sensor data,cable/motor/tension sensor data, etc.). Exercise processing engine 208is then configured to detect the first repetition of a set andrepetition phases using the combined sensor data.

In some embodiments, data, such as workout data (e.g., from MCB 210) andaccessory data (e.g., smart bench data), is provided to backend 206.

In various embodiments, dynamic loading is calculated at any of theabove compute nodes in the computation architecture. In someembodiments, the algorithms and logic to perform the aforementioneddynamic loading are distributed across the entire stack with interfacesbetween each to obtain optimal performance and accuracy, along with lowlatency. For example, tasks that require latency that is lower than ispossible based on communication between layers are done at lower levels.When latency can be higher or when data is taken in aggregate (e.g.,across an entire workout), algorithms are run at higher levels wheremore computational power and contextual data is available.

Further details regarding dynamic loading are described below.

Dynamic Loading

Dynamic loading engine 220 is configured to determine an amount of loador resistance to provide to a user performing strength trainingmovements. As described above, a load to apply is determined as afunction of a user's progress within a given state of an exercise.Example details and embodiments of determining progress within a givenstate of an exercise, as well as functions used to determine a loadbased on the user's progress within a given state of an exercise, aredescribed below.

Repetition Phase Detection

In some embodiments, the given state of an exercise is determined as thephase of a repetition of a movement that the user is currently in. Insome embodiments, repetition phase detection engine 222 is configured todetect what phase or state of a repetition of a move that the user isin. In some embodiments, the repetition phase detection is implementedas part of the application described above. In other embodiments, therepetition phase detection is implemented in firmware. As anotherexample, the repetition detection is performed across the applicationand firmware, where the application sends events to the firmware toindicate when repetitions occur or when phases change.

In some embodiments, repetition detection includes identifying maximaand minima in the cable length measurements, and identifying a patternof extrema (maxes and mins) that are within some thresholds. Asdescribed above, the cable length measurements are determined fromsensor readings taken from sensors such as optical and magneticencoders.

The repetition phase detection techniques described herein may be usedto go beyond determining when a repetition ends and starts, and may beused to determine information about what is occurring throughout therepetition. This includes determining, in real-time, as the user isperforming the repetition, what phase of the repetition the user is in.As will be described in further detail below, using the repetition phasetechniques described herein, a repetition is categorized into fourparts:

(1) a concentric phase, which corresponds to when a cable is beingretracted.

(2) an isometric hold, which is when the cable is extended, but is notmoving anymore (for example, at the top or the bottom of therepetition), where the isometric hold is between the concentric andeccentric phase of the repetition.

(3) an eccentric phase, which corresponds to when a cable is retracting.

(4) a resting hold, similar to an isometric hold, but is betweenrepetitions, such as in a bicep curl, where the user is at the top orbottom of the repetition, resting or waiting, before beginning the nextrepetition.

Using the techniques described herein, the boundaries of the phases areaccurately detected, and each of the four phases of a repetition isindividually identified. As will be described in further detail below,timings of the phases/states of a repetition, the position of the cablewhen a user begins and ends each one of those states/phases, etc. aredetermined. Further, aggregate metrics about each phase of a repetitionare determined, such as average speed, maximum speed, maximum power,average power, duration of a phase, the time at which the maximum speedoccurred, the time at which the maximum power occurred, etc.

For illustrative purposes, the examples provided herein involve motionswhere there are 4 states. More complicated examples are also possibleusing, for example, the state machine formulation described herein, suchas compound moves where at the end of the concentric state, another newconcentric state begins, such as in an “X Pulldown to Tricep Extension”,which is two moves (X Pulldown and Tricep Extension) blended togethersuch that the end of the concentric state of X Pulldown is eventuallyfollowed by, possibly with intermediate Isometric Hold states, the startof the concentric state of Tricep Extension. That is, different types ofstate machines with different numbers of states as transitions may beused depending on what exercise is being performed.

Further, the phase detection techniques described herein are usable todetect the phase of repetitions for two classes of movements: one classof movement where the repetition starts at the bottom (e.g., where therepetition starts at the bottom, or minimum cable extension boundary, ofthe range of motion for the exercise), and one class of movement wherethe repetition starts at the top (e.g., where the repetition starts atthe top, or maximum cable extension boundary, of the range of motion forthe exercise). Examples of movements that start at the “top” includesquats, lunges, and bench presses. For example, in a bench press, theuser should start with the arms extended (and the cables are extended tothe maximum end of the range of motion). Examples of movements thatstart from the “bottom” include deadlifts, bicep curls, and tricepextensions.

In some embodiments, detecting/identifying the phases of a repetition isimplemented by encoding the phases in a state machine. As the userperforms a repetition, depending on the stream of measurements that arecollected from various sensors in the exercise machine, the usertransitions from one state of the state machine to another,corresponding to transitioning from one phase of a repetition toanother. For example, the concentric phase has a correspondingconcentric state in the state machine. For some exercises, if the useris in the concentric state and then leaves the concentric state, thenext state that they are allowed to enter is the isometric hold.

The state machines and/or transitions may depend on the type/classes ofmovement that are being performed. For example, the state machinesand/or transitions may depend on whether the movement starts on aminimum (bottom) or a maximum (top).

For example, consider the bicep curl, where the user starts with thecable position at the minimum end of the range of motion (where thecable is pulled out the least during the exercise). For a movementstarting on a minimum, if the user leaves the concentric phase (e.g., bydetecting a cable length maximum that fits within a set of conditions,as will be described in further detail below), then the repetitiontransitions from having been in the concentric phase/state to theisometric hold/state at the top of the repetition (analogous to avirtual weight stack being at its highest point away from the groundduring the exercise). The user/repetition remains in that state untilanother set of conditions are met (e.g., that the cable length hasdecreased a certain amount or by a certain percentage range of motion,analogous to a cable retracting and a virtual weight stack returningback towards the ground), after which the user/repetition transitionsout of the isometric phase/state and enters the eccentric phase. Theuser/repetition remains in the eccentric phase/state until a cablelength position minimum is detected that meets a set ofconditions/criteria, as will be described in further detail below. Therepetition then enters a next resting state, waiting for the nextrepetition to begin. In some embodiments, the transition out of thewaiting state occurs when the cable length extends a certain amount, atwhich point the concentric phase/state is returned to and entered.

Example State Machines

FIGS. 3A and 3B illustrate embodiments of state diagrams correspondingto repetition phases.

Example State Machine for Top-Starting Movements

FIG. 3A illustrates an embodiment of a state diagram for repetitionphases of movements that begin at the top. Examples of movements thatbegin from the top include squats, lunges, and bench presses. In someembodiments, beginning at the “top” refers to the starting position ofthe repetition corresponding to a “top” or maximum end of the range ofmotion (defined, for example, using cable length/position) for themovement. This corresponds, for example, to the repetition starting witha virtual weight stack further away from the ground.

In some embodiments, the initial state is the “rest” state, and occurs,for example, when the cable is both not grounded (not resting on thewrist) and the weight is turned on. The transitions from the rest stateare different for the two classes of moves that start at the top andbottom of the range of motion, as described above, and as will also bedescribed below in conjunction with the example of FIG. 3B.

Concentric State (302): In this example, in the concentric state, avalid maximum is monitored for. When a valid maximum is detected, thenRest state (304) is entered.

In some embodiments, the valid maximum is computed relative to the rangeof motion. For example, a rule is defined that specifies that athreshold percentage of range of motion (e.g., 65%) is required to havebeen covered before exiting the concentric phase into rest state.

Examples of aggregate metrics computed during the concentric stateinclude maximum instantaneous power/speed, average speed,beginning/ending times of the concentric phase (e.g., timestamps forwhen the concentric state was entered/exited), force applied on thecables, work performed over the entire phase (integration of force timesdistance), a timestamp of when maximum power occurred, the cable lengthposition at which maximum power occurred, a timestamp of when maximumspeed occurred, the cable position at the time that maximum speedoccurred, etc.

Rest State (304): In this example, in the rest state, a positiondecrease by at least a threshold amount is monitored for. When theposition decreases by at least a threshold amount, then the eccentricstate (306) is entered. In some embodiments, the rest state is a stateduring which the next rep is waited for. In some embodiments, thethreshold is a function of range of motion (e.g., position change as apercentage or proportion of range of motion)

Eccentric State (306): In this example, in the eccentric state, a validminimum is monitored for. When a valid minimum is detected, then theisometric hold state (408) is entered.

For example, the eccentric state 306 is exited when a suitable filteredminimum is detected. A suitable filtered minimum may be determined basedon a threshold minimum cable position. The suitability may also bedetermined based on a timing constraint, such as a threshold amount oftime having passed. The suitability may also be determined on range ofmotion (e.g., that a threshold percentage or proportion of range ofmotion has been covered since the last maximum).

Examples of metrics collected for the eccentric state include a maxspeed (e.g., absolute value, as the direction is negative since thecable length is shortening as the cable is retracting back into themachine during the eccentric phase), beginning and end times of theeccentric state (e.g., timestamps for when the state was entered, andwhen the state was exited), beginning and ending cable length positions,etc.

Isometric Hold State (308): In this example, in the isometric holdstate, a position increase by at least a threshold amount is monitoredfor. When the cable position increases by at least the threshold amount,then the concentric state (302) is entered.

In some embodiments, the amount of time spent in the isometric holdstate is computed. The amount of time spent in the isometric hold statemay be computed in a variety of ways. As one example, the time spent inthe isometric hold state is computed based on the timestamps recordedfor entering and exiting the isometric hold state. As another example,the time spent in the isometric hold state is determined based ontimestamps recorded for exiting of the previous state and for enteringthe next state.

Example State Machine for Bottom-Starting Movements

FIG. 3B illustrates an embodiment of a state diagram for repetitionphases of movements that begin at the bottom (of the range of motion).Examples of movements that begin from the bottom include deadlifts,bicep curls, and tricep extensions. In comparison to the example of FIG.3A, for a move that starts at the bottom, the rest and isometric holdstates are reversed, and are switched between coming after concentric orafter eccentric. In some embodiments, beginning at the “bottom” refersto the starting position of the repetition corresponding to a “bottom”or minimum of the range of motion for the movement. In some embodiments,this corresponds to the repetition starting with a virtual weight stackcloser to the ground.

In some embodiments, the starting state is the rest state, similarly toas described above in conjunction with the example of FIG. 3A.

Concentric State (322): In this example, in the concentric state, avalid maximum is monitored for. When a valid maximum is detected, thenIsometric Hold state (324) is entered. Examples of valid maxima andaggregate metrics include those described above in conjunction withconcentric state 302 of FIG. 3A.

Isometric Hold State (324): In this example, in the isometric holdstate, a position decrease by at least a threshold amount is monitoredfor. When the cable position decreases by at least the threshold amount,then the eccentric state (326) is entered. Examples of metrics computedduring the isometric hold state are described above in conjunction withisometric hold state 308 of FIG. 3A.

Eccentric State (326): In this example, in the eccentric state, a validminimum is monitored for. When a valid minimum is detected, then reststate (328) is entered. Examples of valid minima and aggregate metricscomputed for the eccentric state are described above in conjunction witheccentric state 306 of FIG. 3A.

Rest State (328): In this example, in the rest state, a positionincrease by at least a threshold amount is monitored for. When theposition increases by at least the threshold amount, then the concentricstate (322) is entered. In some embodiments, the rest state is a stateduring which the next rep is waited for. In some embodiments, thethreshold is a function of range of motion (e.g., position change as apercentage or proportion of range of motion).

In some embodiments, the repetition counter is incremented after theconcentric phase is transitioned out of. In the case of the bicep curl,the first half repetition (which is the first concentric phase for thebicep curl) is monitored for, and when the first concentric phase isdetected, and the conditions for a correct concentric phase of arepetition are met, then the repetition counter is incremented. In thisexample, when the repetition counter is incremented, only half of arepetition has been completed so far. That is, after having completedhalf a repetition (the concentric phase portion of the repetition), thecounter is incremented, and the repetition enters the isometric holdphase/state.

In the case of a movement that starts from the top, such as the benchpress, completion of the first two phases is monitored for, beforeincrementing the repetition counter (such that the counter isincremented after the concentric phase).

In some embodiments, the use of completion of the concentric phase as atrigger to increment the repetition counter increases the accuracy ofrepetition detection. This is in part because it is more difficult forusers to have anomalous patterns of behavior when in the concentricphase. That is, the motions of the concentric phase are not typicallyperformed unless the user is actively trying to perform theirrepetition.

In some embodiments, two separate state machines (for the two differentpositions, top and bottom, at which movements may start) are maintained,and one is instantiated at a time (depending on what movement the useris currently performing). In other embodiments, a single state machineis maintained, and the state machine logic (e.g., for transitions,triggers, starting states, etc.) is modified at runtime by passing in anindicator (e.g., a flag) that indicates the type of movement beingperformed (e.g., movement starting at top or movement starting atbottom).

In some embodiments, a phase detection state diagram includes a set ofspecial states for monitoring for the first repetition. In the exampleof the bicep curl, sensor measurements are monitored for conditions tobe met for the first concentric phase for the bicep curl (e.g., bylooking for extrema to match within the acceptable ranges of a set ofrepetition detection parameters, which may include, for example,personalized maxima and minima for a user, as well as an allowableamount of percentage variation about the maxima and minima). If thoseconditions are met, then a state corresponding to waiting for the firstrepetition to be detected is immediately left, and the isometric holdstate is entered into.

In some embodiments, the special version of the “waiting for” state forthe first repetition uses the predetermined signature described above todetect the first concentric phase of the first repetition. After theconcentric phase of the first repetition has been detected (and thecounter incremented), then the waiting for/rest state does not need touse the predetermined signature to determine the occurrence of theconcentric phase. For example, the actual measurements collected duringthe performance of the first repetition are used for the remainder ofthe set. For example, the repetition phase detection algorithm/logicswitches over to determining what the user's range of motion was forthat first phase of the first repetition, which is then used to updatethresholds and range of motion for detecting future phases ofrepetitions in the set.

Detecting Phase Boundaries

As described above, phase boundaries (e.g., when to exit/enter intocertain phase states) are determined based on detected extrema. Extrema,such as maxima and minima, may be determined using extrema detectiontechniques such as those described above.

Removing Artificial Extrema

In some embodiments, debouncing is performed to remove bogus extrema.Such bogus extrema may occur naturally, as users may have a pause in themidst of performing certain kinds of movements. However, this pause orhitch does not necessarily indicate that the phase has switched. Forexample, suppose that there is a minimum then a maximum because a userdid half of a repetition, then took a pause, and then continued tofinish the repetition, resulting in two maxima. This should not becounted as two repetitions. Debouncing is performed to removeintermediate bogus maxima.

Other artificial extrema are filtered out or removed based on timingconstraints. For example, another example of an artificial extremum thatcan occur is because the user did not complete the full range of motionor because not enough time has passed for the user to have physicallycompleted a repetition (e.g., it may not be physically possible for auser to have gone from a maximum to a minimum in the recorded amount oftime, and if such a case is detected, then the repetition is notcounted, as it may be due to bad data or some other error). In someembodiments, in order for a phase to be determined as having beencompleted, a threshold amount of time is required to have passed withinthe phase.

Updating Range of Motion

The range of motion may be defined or updated a number of ways. In someembodiments, the range of motion is updated after each repetition orphase of a repetition, based, for example, on the extrema that aredetected in the previous reps in a set. For example, after multiplerepetitions have been performed, the range of motion for a currentrepetition is computed as the median of all of the previous repetitions(in the current set). In this example, each phase may have a new rangeof motion, where the range of motion is used to determine, as describedabove, when to exit/enter states. Further details regarding updatingrange of motion are described below.

Progress within a Given Phase

As described above, in addition to the phase of the repetition the useris in, the resistance to be applied is also based on the user's progresswithin the phase of the repetition. In some embodiments, phase progressengine 224 is configured to determine a user's progress within a givenphase of an exercise move.

In some embodiments, progress within a phase is determined as where theuser is in their range of motion. As one example, where the user is intheir range of motion is determined by computing a percentage range ofmotion. In some embodiments, a user's range of motion is computed as thedifference between maxima and minima in the cable lengths when the useris performing a move (e.g., as computed by repetition phase detection,as described above). In some embodiments, the user's current place intheir range of motion is determined as the difference between thecurrent cable length (current amount of cable displacement) and theminimum cable length (lower boundary of the range of motion), divided bythe overall range of motion.

As one example, if, while the user was performing a move, the observedmaximum cable length (the furthest extent or displacement or amount thatthe cable was pulled out while performing the exercise) is 50 inches,and the observed minimum cable length when performing the move was 30inches, then the range of motion is 50 inches-30 inches=20 inches. Thatis, the boundaries of the range of motion are defined by the observedminimum and maximum cable lengths.

As the user performs a movement, the user manipulates the cable withintheir range of motion (ROM). One example of computing a percentage rangeof motion is as follows. For example, suppose that based on the currentsensor measurement, it is determined that the cable length is currently45 inches. The user's current percentage range of motion, or progressthrough their range of motion, is calculated as (current cablelength−minimum cable length of ROM)/(range of motion)*100%, or in thisexample, (45 inches-30 inches)/(50 inches-30 inches)*100%=75%.

In some embodiments, the user's range of motion is estimated with a highlevel of confidence based on observation of the user performing themovement. In some embodiments, for the first repetition in a set, therange of motion is determined using historical data from previousperformances of the same type of move. As the user continues through theset, the range of motion is updated based on sensor measurementscollected during the set being performed.

The user's range of motion may vary from repetition to repetition(because there is variation in how far they pull out the cable duringthe repetitions of the move, or how much they let the cable retractduring different repetitions of the move). The observed maxima andminima may also be different for each phase of a repetition. Thevariation of the user's range of motion may also be due to the userstepping further away or closer to the exercise machine.

In some embodiments, each time a user finishes a phase or state of anexercise, the zero point (minimum or lower bound of the range of motion)is restarted or reset. The max or upper bound of the range of motion mayalso be updated after each phase. For example, if a user switches fromconcentric to eccentric phase, at that point it is determined that theuser is at 100% of their range of motion, and that the cable is pulledout to its maximum extent.

If the user's range of motion is not updated to account for variation inthe user's motion from repetition to repetition, and is fixed, then theuser may never again reach 100% or 0% on every repetition (because, forexample, they do not reach the same cable length maxes or mins insubsequent repetitions). In some embodiments, as the dynamic load iscomputed as a mapping between load force and percentage range of motion,this would result in incorrect loads being applied at what should havebeen the top and bottom of a user's range of motion for a repetition.

Thus, as described above, in some embodiments, to account for thevariation in their range of motion from phase to phase, the user's rangeof motion is recomputed or updated after completion of each phase of arepetition of an exercise. The updated range of motion is then used asthe range of motion for the next phase.

As described above, the range of motion is computed for each user in acustomized manner, such that the dynamic loading is personalized to theuser as well. That is, users with different ranges of motion (e.g.,because one person has longer arms than another person) will havedifferent load curves (also referred to herein as resistance curves)generated for them.

While in the above example, progress within a given state is computed asa percentage range of motion, progress within a state may also bemeasured or otherwise determined in other ways. For example, a state orphase of an exercise may be associated with a range of time or totalamount of time that the user should remain in the state (e.g., theamount of time a user is expected to hold a handle in position duringthe isometric phase of a repetition). In this example, the progressionwithin the state of the move is measured as a percentage of the totalamount of time that the user has been within the state.

Resistance Curves

Dynamic loading engine 220 is configured to dynamically vary the load orresistance provided to the user. This includes determining an amount offorce applied by the motor of the exercise machine to resist a user'smotion. In some embodiments, the dynamic load (also referred to hereinas “flex” load or weight or resistance) is determined as a dynamicallyvariable amount of additional load that is applied on top of a fixed orconstant base resistance. As will be described in further detail below,the amount of additional load is dependent on both the phase of arepetition that the user is in, as well as their progress within thatphase or state.

In some embodiments, the amount of dynamic load to apply is determinedaccording to a load curve or profile. A load or resistance curvespecifies a mapping between force (load or resistance, specified, forexample, in pounds or any other measure of force) to be applied andprogress within a state of an exercise. For example, a load curvespecifies the amount of effective weight to be provided as a load for agiven percentage range of motion.

Different exercises may be associated with different types or loadcurves, where a shape of a load curve for a given move matches the shapeof the user's strength through execution of the move. The following arefour example types of load curves that are used to determine load basedon a user's progress within a given state of an exercise. Other types ofload curves may be used to determine dynamic loads, as appropriate. Inthis example, the different types of load curves are stored in movementdata store 226. In some embodiments, the movement data store includes amovement library that includes information pertaining to each movement,such as corresponding resistance curves. In some embodiments, themovement data store is located on 206. The movement data store may belocated on both exercise machine 202 and backend 206. The movement datastore may also be distributed across the exercise machine and thebackend. In some embodiments, the movement data store is updatedindependently of software of the exercise machine, without requiring asoftware update.

FIGS. 4A-4D illustrate examples of types or shapes of load curves.

Ascending Load Curve Profile

FIG. 4A illustrates an embodiment of an ascending load curve profile. Asshown in this example, as the percentage range of motion increases(e.g., from 0% to 100%), the force generated by the motor (and thereforeresistance and load provided to the user by the motor or motors of theexercise machine) also increases.

The ascending load curve profile of FIG. 4A matches a user's strengthprofile when performing an exercise movement such as a squat or a benchpress. As shown in this example, the shape of the load curve is dividedinto multiple sections, with each section corresponding to a particularphase or state of a repetition. The arrows in the figure illustrate thedirection of the change in percentage change of motion as a userprogresses through a given phase of a movement repetition.

For example, portion 402 of the load curve profile illustrates themapping between load and percentage range of motion for the concentricphase. Portion 404 of the load curve profile illustrates the mappingbetween force and percentage range of motion for the eccentric phase. Inthis example, the mapping between percentage range of motion and loadforce is a linear relationship. As shown in this example, the portion ofthe load curve corresponding to the eccentric phase is shifted upwardsrelative to the concentric phase. This reflects that users are typicallystronger when they are lowering the digital/virtual weight stack (thatis allowing the virtual weight stack to return towards ground), whichcorresponds to the eccentric phase of a repetition. As shown in thisexample, after the concentric phase ends, the dynamic loading engineadds an additional amount of weight as an offset for the beginning ofthe eccentric phase.

The following is an example of defining the load curve function for agiven move for a given user. In some embodiments, the dynamic loadfunctions are generated based on the shape of the load curve profile forthe move (ascending linear relationship between percentage range ofmotion and load force in this example of an ascending profile), a baseweight, and a maximum allowable amount of additional flex/dynamic load(that can be added on top of the base weight).

Base Weight: In some embodiments, the base load, weight, force, orresistance is the lowest or baseline amount of load that is provided (noadditional flex load is added). In some embodiments, the baseweight/force is determined based on a suggested load for the user (e.g.,determined/provided by backend 206). The suggested load is a fixed,non-varying load that is provided if the dynamic load mode (alsoreferred to herein as “flex” mode) is not turned on. As the suggestedload does not match the user's strength curve, it is set at a point thatis higher than the user's weakest point of strength. To accommodate forthis, the base force is set to be slightly below the strength curve. Ifthe total suggested weight, as an example, is 50, then the followingexample equation is solved to find the base weight and flex weight:total_suggested_weight=base_weight+(0.25*0.35*base weight), orbase_weight=suggested_weight*0.92, base_weight=50*0.92=46. The flexweight is 0.25*base_weight=11. (Slight modifications are made near themaximum and minimum weights the exercise machine can provide.)

Maximum Allowable Amount of Additional Resistance:

In some embodiments, the total amount of allowable additional load iscomputed as a portion (e.g., 25%) of the base weight. While 25% of baseweight is used in this example to determine the total or maximumallowable additional flex load, other ways of determining the total ormaximum allowable additional flex load may be used.

Based on the shape of the load curve profile in the various phases,dynamic load functions are generated for each phase. In this example,the dynamic load function for the concentric phase has a linearrelationship, where:

Load=⅔*max_allowable_additional_flex load*percentage_ROM+base_weight

Based on the above concentric phase dynamic load function, as the userprogresses through the concentric phase, where the percentage range ofmotion increases from 0% to 100% as the user advances through theconcentric phase (that is, from the start of the concentric phase to theend of the concentric phase), the load increases starting from the baseweight to an ending load ofbase_weight+⅔*maximum_allowable_additional_flex_load.

In this example, for the reasons described above (because the user isstronger in the eccentric phase), the dynamic load function for theeccentric phase is shifted upwards relative to the concentric phase loadcurve. In this example, the eccentric phase curve is shifted up by theremaining ⅓*maximum_allowable_additional_flex_load. This results in theexample dynamic load function for the eccentric phase to be:

Load=⅔*max_allowable_additional_flex_load*percentage_ROM+(⅓*max_allowable_additional_flex_load+base_load).

Based on the above eccentric phase dynamic load function, as the userprogresses through the eccentric phase, where the percentage range ofmotion decreases from 100% to 0% as the user advances through theeccentric phase (that is, from the start of the eccentric phase to theend of the eccentric phase), the load decreases starting from thebase_weight+total allowable additional flex weight to an ending load ofbase_weight+⅓*maximum allowable additional load.

While a ⅔ and ⅓ split of the total allowable weight was used herein toallow for shifting up of the eccentric phase, other offsets may beapplied. While in this example, a total resistance provided was computedas a function of a base weight and a dynamically varying additionalamount of weight, other functions may be computed (e.g., where the totalload is computed directly, and is not broken down into parts such as abase weight and a dynamically varying additional weight).

Descending Load Curve Profile

FIG. 4B illustrates an embodiment of a descending load curve profile. Asshown in this example, as the percentage range of motion increases inthe concentric and eccentric phases (e.g., from 0% to 100%), the forcegenerated by the motor (and therefore resistance and load provided tothe user by the motor) decreases. Examples of exercises for whichdescending load curve profiles are provided include rows (e.g.,bent-over rows, seated rows, etc.), pulldowns (e.g., lat pulldowns),etc.

Similar to as described above in the example of FIG. 4A, to match theuser's overall higher level of strength in the eccentric phase ascompared to the concentric phase, the load curve in the eccentric phaseis offset (and higher) as compared to the concentric phase.

For example, the portion of the load curve in the eccentric phase isshifted higher relative to the concentric phase portion of the loadcurve by ⅓*total allowable amount of additional flex load/weight. As oneexample, at the end of an eccentric phase of a row (where the cablelength/position is decreased to its lowest extent), the user will reach100% of the allowed flex weight, as shown at 412. As soon as the userreaches the end of the eccentric phase, the added amount of additionalweight will then reduce to ⅔ of the total allowable flex load for thestart of the concentric phase. As the user progresses through theconcentric phase, the additional amount of load added on top of the baseresistance approaches zero (returning to the base resistance).

Mid-Peak Load Curve Profile

FIG. 4C illustrates an embodiment of a mid-peak load curve profile. Asshown in this example, when the user is in a given phase (eitherconcentric or eccentric), the load generated by the motor increases asthey progress or advance from the start of a phase, peaking at 50% rangeof motion, and then decreases until the end of the phase. This loadcurve is provided for exercises where the user's strength increases anddecreases in a corresponding or similar manner. Examples of exercisesthat correspond to mid-peak user strength/load curves are curls (e.g.,bicep curls, hammer curls, etc.)

As one example, for a bicep curl, the user starts at the bottom of therange of motion (0%), with the concentric phase. As the user pullsupward, they are at maximum force when their arm is at approximately 90degrees (˜50% range of motion). The load matches the user's increasingstrength up to that point by linearly increasing the load. As the usergoes beyond the 90 degree point during the concentric phase, theirstrength decreases until they reach the top of their range of motion,where they are weakest. Thus, as shown in the example of FIG. 3C, duringthe concentric phase, the load provided to the user decreases from themaximum load in that phase to zero additional dynamic weight added whenthe user is at the top of their range of motion (100% ROM).

Once the user has reached the top of their range of motion (andtherefore the end of the concentric phase), the exercise machineprepares for the user entering into the eccentric phase. In thisexample, ⅓*total allowable flex weight is added as an offset, as shownin the portion of the load curve corresponding to the eccentric phase.As the user goes back down through their range of motion (which willprogress from 100% ROM at the start of the eccentric phase to 0% ROM atthe end of the eccentric phase), the load increases until the 50% rangeof motion, corresponding to the user's arm being at 90 degrees, and theuser being at their strongest during this phase. As the user continuesto lower their arm, the load reduces back to being base weight+⅓*totalallowable flex weight at the end of the eccentric phase.

In some embodiments, the mid-peak curve is implemented as thecombination of ascending and descending profiles, split across the 50%range of motion mark. Such compound resistance curves may also begenerated for compound moves (e.g., combining different types ofprofiles together for different portions or phases of a compoundmovement, where a single repetition of the compound movement includesmultiple moves). The transition for profiles may be determined bydetecting a transition between the moves in the compound move.

Flat Load Curve Profile

FIG. 4D illustrates an embodiment of a flat load curve profile. In thisexample of a flat load curve, there is no change in the load throughoutthe progression through a phase (where in this example progression isdetermined based on percentage range of motion). A kneeling cable crunchis one example of a movement that uses a flat resistance curve.

In this example, no additional weight is added on top of the base weightin the concentric phase (portion 432). In the eccentric phase (dottedline, 434), 100% of the allowed additional load is applied.

In some embodiments, a flat curve is used as a default for movements forwhich other load curves do not apply.

In the above examples, if, as part of the user's motion, the cablelength goes beyond the 100% range of motion point, or below the 0% rangeof motion cable point, the load remains the same as the 100% or 0% point(and the load is capped).

Further, if a set ends and the user puts the weights down or turns offdigital weights, which would leave the bounds of the range of motion,the load is capped at 0, and the exercise machine does not apply more orless load as the user leaves the range of motion.

In some of the above examples, the relationship between range of motionand force generated is linear. Other relationships (e.g., quadratic,non-linear, etc.) may also be implemented.

Other types of load curves/profiles may also be implemented and used todynamically determine what load to provide to a user of an exercisemachine. For example, as described above, some movements involvecompound moves, such as one that combines a squat and a row, or a squatand then a push. In some embodiments, a compound load curve is generatedto accommodate compound moves. As one example, multiple load curves arecombined together to generate a composite curve for the compound move.

In one embodiment, the curves described above have an ability to befurther modified by applying factors to modify the range of motion axisor the force axis for each movement. A default additional percentageweight may also be set that the user may modify which changes how muchthe resistance curve is applied to that movement.

As shown in the above examples, there is a shift in load when goingbetween concentric and eccentric phases. In some embodiments, theload/weight is not changed suddenly on a user. Rather, the change inload is smoothly loaded with ramping occurring, where the load does notchange above a certain rate over time (that is, for example, the rampingis time-based).

Based on the load curve profile for the move being performed, the phasethat the user is in, and the user's progress within that phase, thedynamic load engine determines an amount of force or resistance or loadto provide to the user. Based on the calculated dynamic load, a signalis sent to the motor controller which adjusts torque of motor such thatthe resistance provided by the motor corresponds to that computed by thedynamic load engine, as described above.

As shown in the above examples, strength loading is dynamically adjustedbased on progress within a given state of an exercise, such as strangeof motion. In some embodiments, instead of, or in addition to adjustingstrength loading based on progress within a given state of an exercise,such as range of motion, the strength loading is adjusted based on othermeasurements such as speed/velocity, acceleration, etc. In someembodiments, these variables, such as speed and acceleration, orcompared to expected values. If the actual values for these variablesare too high, too low, or not following a threshold correct pattern,then the weight can be adjusted for maximum efficacy and safety.

In the above examples of FIGS. 4A-4D, the load curves map resistanceforce to percentage range of motion, where percentage range of motion isused to measure or otherwise indicate the progress of the user throughvarious phases or states of a repetition (based on cable positionmeasurements, as described above). There are some moves where the useris not meant to do repetitions that involve pulling on the cable. Forexample, instead, the user is expected to hold an actuator (e.g.,handle) and resist motion as the load pulls on the actuator (attemptingto retract it back into the arm). In such exercises, there is littlechange in cable position. In some embodiments, for such exercises,dynamic loading is provided by varying the load over time (versuspercentage range of motion or as a function of cable position). Forexample, the load is fluctuated over time in a sine wave pattern. Inthis case, the move may have an expected total amount of time that theuser maintains the position of the actuator, and the progress throughthe exercise is measured as the percentage or proportion of the totalamount of time that has elapsed so far.

As described above, the size of the force differential between theconcentric and eccentric phases may be varied. The machine may alterthis value so that the user's muscles are optimally stressed throughoutthe two phases. In one implementation, as shown in the example of FIG. 5at point “A” (502), a pause between phases may be treated as anopportunity for isometric exercise and the machine may increase theloading until the user begins to yield (or by a prescribed fixedamount), and then, as the eccentric phase begins, reduce the loading tothe appropriate value for that phase. An example of competitiveisometric performance is seen in weightlifting, where a competitor isrequired to hoist the weight and then hold it in the final position fora brief period.

FIG. 5 illustrates an embodiment of an application of a load forisometric exercise at a point where movement pauses briefly prior to areversal. Referring to the example ascending resistance curve profile ofFIG. 4A as a starting point, a user may displace the machine loadingmechanism until reaching the full range of motion whereupon the briefcessation of motion allows the exercise machine to increase the force orload immediately prior to the eccentric phase. In one embodiment, themachine may increase the force even if the user is in motion. If, aspart of the exercise routine/movement, the user is required to hold thatposition so that an isometric exercise period is included, then themachine builds the load to a point that is greater than that which is tobe used for the eccentric phase. To avoid shock loading, or jerking theuser, this load augmentation may be applied smoothly (e.g., using thetime-based ramping described above).

In one embodiment, the increase in loading is continued until the userbegins to yield as shown at point “A” (502) in FIG. 5. Once the useryields, then the dynamic loading engine 220 of the exercise machinereduces the load to the scheduled value for the eccentric phase. Inanother embodiment, the load that is applied for the isometric phase isapplied for a prescribed time, which, once elapsed, returns the machineto the scheduled load for the eccentric phase (e.g., the specifiedmapping between resistance and progress within a given state of anexercise). User cues to signal the end of the isometric phase in thelatter implementation may be any of acoustic, visual, haptic, ortactile. This may include the machine detecting the end of an isometricphase by a user's motion. For example, the user yields, and so thetrainer (exercise machine) reduces the load automatically.

Example of Dynamic Loading when Performing a Squat

The following is an example of providing dynamic loading when performinga squat exercise. The dynamic loading techniques described herein may beapplied for any other exercise as appropriate.

In this example, suppose that a user is performing exercises included ina workout routine (which specifies a series of different exercises to beperformed). The workout routine progresses according to a timeline, asdescribed above. In this example, suppose that the next move to beperformed according to the timeline is the squat exercise.

In some embodiments, dynamic loading is an option that can be turned onor off. In this example, suppose that the user has indicated that theywant to have dynamic loading enabled. For example, the user hasindicated that they would like this “flex” mode prescribed. In someembodiments, the user is provided an option (e.g., via a user interfaceinput) to adjust the amount of additional load that can be applied. Insome embodiments, the user may use a user interface/widget to select apercentage of base weight to apply to a resistance curve. This providesa simple interface usable by users, and users may build custom workoutsthat include this mode. For example, the user may create custom workoutsand designate which moves for which flex loading should be prescribed,as well as the maximum allowable additional load that can be added. Insome embodiments, the selection of the desired amount of load by theuser is recorded for the remainder of the workout, where every other setof that move will also have the flex mode applied.

In other embodiments, for workouts such as those created by coaches, thecoaches can have the flex mode or the dynamic loading mode prescribedfor various moves. Coaches may prescribe the mode locally and/orremotely for sets in guided workouts.

In some embodiments, when a user reaches a set for a move in the workoutthat has flex mode prescribed, then the mode is automatically turned on.The amount of additional weight that may be added may be set by thecoach as part of the programming.

In some embodiments, an appropriate resistance curve is automaticallyselected for the user based on the movement being performed.

In this example, various metadata associated with the squat exercise isobtained. For example, the exercise processing engine 208 of theexercise machine has a copy of all of the moves (e.g., in a movementlibrary stored in movement data store 226). The list of all moves may beincluded in an all-movements table, an example of which is providedbelow in Table 2. The table is an example portion of a movement librarythat has the list of the various movements that may be performed, aswell as corresponding information for each movement, such as thecorresponding resistance curve. In some embodiments, the followingoptimal curves/matching strength curves are defined for each specificmovement for look-up in the movement library.

TABLE 2 Movement Name SmartFlex Case Alternating Bench Press AscendingBarbell Bench Press Ascending Bench Press Ascending Single Arm BenchPress Ascending Inline Chest Press Ascending Iso Split Squat Chest PressAscending Single Leg Standing Chest Press Ascending Standing InclinePress Ascending Tall Kneeling Single Arm Chest Ascending Press ½Kneeling Chop Ascending Inline Chop Ascending Iso Split Squat ChopAscending Rotational Chop Ascending Single Leg Chop Ascending StandingChop Ascending Bird Dog w/ Row Flat Kneeling Cable Crunch Flat PulloverCrunch Flat Resisted Dead Bug Flat Barbell Lying Glute Bridge FlatBarbell Deadlift Ascending Barbell RDL Ascending Barbell Sumo DeadliftAscending Neutral Grip Deadlift Ascending Pull Through Ascending SingleArm Deadlift Ascending Single Arm Single Leg RDL Ascending Single LegRDL Ascending Suitcase Deadlift Ascending Barbell Bicep Curl Mid-PeakBicep Curl Mid-Peak Decline Chest Fly Descending Front Raise DescendingHammer Curl Mid-Peak Incline Chest Fly Descending Lateral RaiseDescending Lying Bicep Curl Mid-Peak Middle Chest Fly DescendingOverhead Tricep Extension Ascending Reverse Fly Descending Seated BicepCurl Mid-Peak Single Arm Decline Chest Fly Descending Single Arm InclineChest Fly Descending Single Arm Tricep Extension Ascending SkullCrushers Ascending Tricep Extension Ascending Tricep Kickback AscendingY-Pull Descending ½ Kneeling Lift Descending Inline Lift Descending IsoSplit Squat Lift Descending Rotational Lift Descending Standing LiftDescending Goblet Curtsey Lunge Ascending Goblet Reverse Lunge AscendingResisted Lateral Lunge Ascending Resisted Step Up Ascending ReverseLunge to Single Arm Row Flat ½ Kneeling Alternating Overhead AscendingPress ½ Kneeling Overhead Press Ascending ½ Kneeling Single Arm OverheadAscending Press Barbell Seated Overhead Press Ascending SeatedAlternating Overhead Press Ascending Seated Overhead Press AscendingSeated Single Arm Overhead Press Ascending Standing Barbell OverheadPress Ascending Standing Overhead Press Ascending ½ Kneeling PallofPress Ascending Iso Split Squat Pallof Press Ascending Seated PallofPress Ascending Single Leg Pallof Press Ascending Standing Pallof PressAscending Tall Kneeling Pallof Press Ascending Lateral Bridge w/ RowDescending Pillar Bridge w/ Row Descending Alternating Neutral LatPulldown Descending Barbell Chin-up Descending Barbell Seated LatPulldown Descending Neutral Lat Pulldown Descending Seated Lat PulldownDescending Seated Single Arm Lat Pulldown Descending Tall KneelingSingle Arm Lat Descending Pulldown X-Pulldown Descending X-Pulldown w/Tricep Extension Ascending ½ Kneeling Single Arm Row Descending BarbellBent Over Row Descending Bent Over Row Descending Rotational RowDescending Seated Row Descending Single Arm Bent Over Row DescendingStanding Alternating Push-Pull Flat Standing Face Pull DescendingStanding Single Arm Row Descending Upright Row Descending Barbell FrontSquat Ascending Bulgarian Split Squat Ascending Goblet Split SquatAscending Goblet Squat Ascending Single Arm Squat w/ Row Ascending SplitSquat Ascending Squat w/ Row Ascending

In this example, the information associated with a movement includes anindication of a load or resistance curve/profile/shape associated withthe exercise. Here, the load curve profile, also shown in the example ofTable 2 as the “smartflex case,” is indicated by an identifier for thegiven exercise. In this example, the identifier for a load curve is astring name. Other examples of load curve type identifiers includenumbers, such as “1,” “2,” “3,” and “4,” with each value correspondingto a particular type of load curve. The load curve types indicated inthe example of Table 2 correspond to the example load curve types ofascending, descending, mid-peak, and flat described in conjunction withFIGS. 4A-4D.

In this example, because the squat has an ascending profile, such asthat shown in the example of FIG. 4A, an indicator for the ascendingprofile is listed in the table. In some embodiments, a lookup of themovement library is performed using an identifier of the movement, andthe identifier for the ascending profile is obtained in response to thequery.

In this example, the dynamic load curve profile parameter for the squat(e.g., identifier of the profile) is sent to the dynamic loading engine220. The ascending shape load curve is then used by the dynamic loadengine to determine what resistance to provide to the user given theirprogress within a given state of a repetition of the exercise.

In some embodiments, the dynamic loading mode (also referred to hereinas a “flex” mode, or flexible load mode), because it depends on anaccurate estimate of range of motion, is not applied until the range ofmotion is determined with high confidence. Examples of determining rangeof motion are described above.

In some embodiments, the dynamic loading is turned on at the start ofthe concentric phase of a repetition. This may be done for safety, asaccording to the load curve, the additional weight is highest in thestart of the eccentric phase, and the user may not be prepared orexpecting the additional weight, which may pull them down.

As described above, in some embodiments, the resistance that is providedto the user includes two elements: (1) a base weight, and (2) adynamically variable additional weight that is added on top of the baseweight. The dynamically variable additional weight is also referred toherein as a “flex weight.” In this example, the flex weight variesproportionally to the percentage range of motion (which indicates wherethe user is in their range of motion).

In some embodiments, as described above, the maximum amount of flexweight that is allowed to be added is determined. As one example, themaximum amount of flex weight to be added is a percentage of the baseweight (e.g., 25% of the base weight—other percentages may be used, asappropriate).

As described above, in some embodiments, the base weight (base amount ofload or resistance to apply) is determined based on a suggestedweight/load.

In some embodiments, the suggested weight for the user is requested fromthe backend 206. The suggested weight may be determined based onhistorical information (e.g., in user data store 218). As one example,the suggested weight is a constant amount of load that, if the dynamicloading mode were not on, would be suggested to apply as a load to theuser for a set.

In this example of the squat, suppose that the suggested weight is 50pounds (lbs), and dynamic loading has been turned on. Based on thesuggested weight/load of 50 lbs (without flex mode on), the base weightfor flex mode is computed as described above.

Based on the computed base weight for the squat, the maximum amount ofadditional flex weight that is applicable, and the ascending profile, aload/resistance curve function for the user for the squat exercise moveis generated that maps the amount of load or resistance to a percentagerange of motion while in a given phase (example of progress within agiven state/phase of the repetition).

In this example, at the start of a concentric phase, the flex weight isapplied (that is, a resistance computed based on the function of theprogress of the exercise within a given phase is applied). For example,cable sensor measurements are received periodically (e.g., 100 times asecond). In some embodiments, the cable sensor measurements are receivedby sensor data aggregation engine 216. From the cable sensormeasurements, the current percentage range of motion of the user isdetermined (e.g., by phase progress engine 224 of repetition phasedetection engine 222, as described above).

As the percentage range of motion is updated, the amount of resistanceprovided is updated, according to the generated load curve. An exampleof an ascending load or resistance curve is described in conjunctionwith the example of FIG. 4A.

Referring to the example ascending load curve of FIG. 4A, in thisexample, at the start of the concentric phase, 0 additional flex weightis applied (that is, the base weight is applied, and no additionalamount of weight is added on top of the base weight). As the userprogresses through the concentric phase, the cable is displaced in amanner such that it is increasingly extended, and their percentage rangeof motion increases. In this example, the maximum amount of additionalflex weight that is added on top of the base weight in the concentricphase (at 100% range of motion) is ⅔ of the total allowable flex weight.That is, in this example, in the concentric phase, as the percentagerange of motion increases from 0% to 100% (where in the concentricphase, the user starts from 0% range of motion), the load appliedincreases linearly from base weight to base weight+⅔*total allowableamount of flex weight.

Continuing with the progression of the squat repetition, suppose that acable maximum (extrema of the range of motion) is detected. A phaseboundary is detected (e.g., as describe above). The user now enters arest period and the concentric phase has ended.

The next phase is the eccentric phase. As described above, to accountfor variation in the user's motion, and the change in their range ofmotion from repetition to repetition, the range of motion is updated. Insome embodiments, the updating is performed by updating the maxima andminima used to define the user's range of motion based on observationand sensor measurements of the user's motion, as described above.

In some embodiments, at the end of the concentric phase (or at the endof a repetition), the corresponding cable position is now redefined as100% of the range of motion. In some embodiments, the range of motionfrom the previous phase is taken as the new correct range of motion. Inother embodiments, the median of the extrema of the range of motion ofprevious reps is used to define the current new correct range of motion.That is, the previous ranges of motion of previous one or morerepetitions are used to determine the range of motion for the upcomingrepetition.

For example, even if a user only completed 90% of a predicted range ofmotion, and then stopped, they have reached a maximum, and the cablelength at this maximum is now a new ROM maximum that corresponds to 100%range of motion for the new repetition. That is, the exercise machinehas adjusted to where they have stopped, and updated their range ofmotion for upcoming repetitions. In some embodiments, this updating isapplied through every phase.

In this example, at the end of the concentric phase, the last third ofthe total allowable amount of flex weight is added to the load. That is,similar to as described in conjunction with FIG. 4A, the portion of theresistance curve for the eccentric phase is the same as the portion ofthe load curve for the concentric phase, but shifted upwards by ⅓ of thetotal allowable amount of load. This is to account for users beingstronger in the eccentric phase relative to the concentric phase. Inthis way, the user's strength is matched at every point, and the loadvaries not only according to the range of motion, but also to the phaseof the repetition that the user is in.

In this example, the eccentric phase starts at 100% range of motion(starts with the cable displaced or pulled out to its furthest extentwithin the range of motion), and ends with the user at 0% range ofmotion (the cable is displaced in such a manner that it is retractedmore and more as the user progresses through the eccentric phase). Thus,as shown in this example, as the percentage range of motion decreasesfrom 100% to 0%, the load applied decreases linearly from baseweight+total allowable amount of flex weight to base weight+⅓*totalallowable amount of flex weight.

When it is detected that the eccentric phase has ended, the additionalamount of flex weight that is added drops down to zero (to reset to baseweight for the start of the concentric phase of the next squatrepetition).

Thus, as shown in this example, a personalized load or resistance curvefor the user for a given move is generated that is based on a variety ofparameters, such as base weight, maximum or total allowable amount ofadditional flex weight to add on top of the base weight, the shape ofthe load curve applicable to the move, and fractional multipliers (e.g.,the ⅓ and ⅔ factors used to determine the bounds of the additionalresistance applied within a given phase).

In some embodiments, the amount of load provided to the user isdisplayed (e.g., via a screen associated with the exercise machine). Asone example, a weight dial is rendered that shows the base weight. Theadditional flex weight that is added on top of the base weight is alsodisplayed. In some embodiments, the dial changes as the user lifts toreflect the weight they are actually lifting at the movement. Othervisualizations or indications of dynamic loading may be provided asappropriate (e.g., acoustically).

Dynamic Spotting Protocol

In some embodiments, the exercise machine provides a dynamic spottingservice or protocol. Example embodiments of a dynamic spotting protocolare provided below.

Consider, for example, a scenario where a user is in the middle of aconcentric phase and reaches a point where they cannot complete therange of motion because they are fatigued. This is a common scenario inweight lifting, and may be considered poor form because the user cannotcomplete the range of motion. However, if the system detects thisscenario it “spots” the user, analogous to a human spotter for weightlifting, for example:

-   -   1. A user begins by pulling the cable/actuator (1008/1010)        through the range of motion;    -   2. The user's range of motion is between pre-determined motion        thresholds, for example 20% and 80%;    -   3. The velocity of the cable drops to zero, or below some        pre-determined velocity threshold close to zero;    -   4. Even at a low velocity, measured and/or calculated tension        applied by the user is found to be above a pre-determined        tension threshold, such as 60% of the current m;    -   5. The tension and low velocity persists for a pre-determined        period of time, for example 1.5 seconds;    -   6. The system responds by slowly reducing m, for example        linearly over the course of 2 seconds from 100% of        starting/current m to a pre-determined mass threshold, for        example 90% of starting m. As soon as velocity rises above some        pre-determined velocity threshold such as 5 cm per second, m        stops slowly reducing, and a new function adjusts m through the        remainder of the range of motion. Two examples of a new function        is a post-spot function or a scaled version of the prior        function that the user got stuck on.

The above procedure describes an embodiment corresponding to onespotting protocol, and other protocols exist. In one embodiment, duringthe concentric phase m is reduced such that velocity of thecable/actuator (1008/1010) does not fall below a pre-determined velocitythreshold. If a user's velocity drops below that threshold, m is reducedby a corresponding amount in order to aid the user to maintain a minimumvelocity. Such a system may also prevent the user from exceeding amaximum velocity by increasing m if the velocity rises above a targetthreshold. In a further embodiment, this is accomplished using linearformulas or a PID loop.

In one embodiment, the logic described above is implemented by a seriesof if statements in software. Alternatively, the logic described aboveis implemented by a rules engine. Alternatively, the logic describedabove is implemented using equations. Alternatively, the logic describedabove is implemented using look-up tables.

Such a spotting procedure may enable “forced repetitions” where a useris aided in completing their full range of motion by being spotted whenthey get stuck rather than being forced to prematurely end theirrepetition. This may have health/efficiency benefits for the user.

FIGS. 6 and 7 are illustrations of embodiments of user accommodation inrepetitions. One example of providing accommodation is spotting theuser. For a case where a user is making it past 80% percent range ofmotion in the concentric phase, but is not completing the full 100%,this may be an indication of bad form and a symptom of fatigue.Adjusting the function after each repetition such that the mass mbetween 80% and 100% is reduced to accommodate the user is implementedas shown in FIG. 6, and a close-up is shown in FIG. 7 indicating fourdifferent repetitions.

In this example, after each repetition the user made it past 80% but notto the full 100%, so the system responded by adjusting the mass functionafter each of the 4 example repetitions. In one embodiment, the logicdescribed above is implemented by a series of if statements in software.Alternatively, the logic described above is implemented by a rulesengine. Alternatively, the logic described above is implemented usingequations. Alternatively, the logic described above is implemented usinglook-up tables.

As shown in FIGS. 6 and 7 the system may in communicating with the usermake reference to a repetition of peak-mass 100 lbs, because that is thegreatest amount of mass in the function which occurs at 50% range ofmotion. If, for example, peak-mass were 150 lbs instead of 100 lbs, thefunction looks similar, but everything is scaled by a factor of 1.5×.

If a user gets stuck between 0% and 20% of range of motion in theconcentric phase, it may indicate that the mass m is far too high forthis given repetition. In such a case, the system may automaticallyadjust m as follows:

-   -   1. A user begins by pulling the cable/actuator (1008/1010)        through a range of motion;    -   2. The user's range of motion is between pre-determined motion        thresholds, for example 0% and 20%;    -   3. The velocity of the cable drops to zero, or below some        pre-determined velocity threshold close to zero;    -   4. Even at a low velocity, measured and/or calculated tension        applied by the user is found to be above a pre-determined        tension threshold, such as 60% of the current m;    -   5. The tension and low velocity persists for a pre-determined        period of time, for example 1.5 seconds;    -   6. The system responds by slowly reducing m, for example        linearly over the course of 2 seconds from 100% of        starting/current m to a pre-determined mass threshold, for        example 60% of starting m. As soon as velocity rises above some        pre-determined velocity threshold such as 5 cm per second, m        stops slowly reducing, and a new function adjusts m through the        remainder of the range of motion. Two example of a new function        is a post-stuck function or a scaled version of the prior        function that the user got stuck on.

In some embodiments, the dynamic loading described herein takes intoaccount spotting, where the amount of loading that is provided isadjusted based on the presence of spotting.

In some embodiments, when it is determined that spotting or assistanceshould be provided, then the additional dynamic (flex) weight that isapplied is reduced to zero.

As one example, suppose that the user is in the concentric phase of thesquat and needs spotting. For example, if the user is spotted while at50% of their range of motion, the additional dynamic weight is reducedfirst. If further spotting is required beyond the base weight, then theresistance is adjusted to be below the base weight. As another example,suppose that the user is only spotted a small amount, such as a 10^(th)of a pound (where after being spotted, the resistance is still abovebase weight), and the user then continues their repetition. In thisexample, the user is not provided additional flex weight for theremainder of their concentric phase.

At the end of the concentric phase, the load is brought back up from thespotted weight. As one example, the resistance is brought back up to1.5*the weight the user finished the repetition with. Depending on theamount that the user was spotted and the load they ended the repetitionwith, this may bring the starting weight back up to the full load. Thatis, in this case, the load will have been flat during spotting, and thenwill ramp safely and quickly up to where the load would have been hadthe user not been spotted.

As another example, suppose the user was spotted beyond the additionaldynamic weight (and was spotted to a point where the user ended theirrepetition below the base weight). At the end of the repetition, theexercise machine adds 50% (other proportions may be applied, asappropriate) of the remaining weight/load—this is the maximum weightthat the exercise machine will allow going forward. The maximumallowable weight may be below base weight or above base weight.

If the new allowable maximum load is still below base weight, then theeccentric phase will be flat, similar to flex mode being off, and theload at the start of the next concentric phase will also be flat untilthe end of the next concentric phase. If the new allowable maximum loadis above base weight, but below the maximum allowed flex weight, thenthe amount of additional weight that is allowed to be added to the baseweight is capped at the new, lower maximum. That is, the load canincrease to the new lower additional maximum at the same slope asbefore, but will then be capped, regardless of the user's percentagerange of motion.

That is, in the above example, when taking into account spotting, ifspotting is determined to be needed, then the flex mode is turned offfor the remainder of the current repetition. The load at the end of thephase of the repetition is determined, and it is determined whether thisfinal load is below the base weight, between the base weight and thetotal allowable maximum flex weight, or above the total allowablemaximum flex weight+base weight.

Based on which of the three ranges 1.5*the final load is, differentadjustments are made to the dynamic resistance curves. For example:

-   -   If 1.5× the final load is still below base weight, then the load        is base weight.    -   If 1.5× the final load is between base weight and base        weight+total maximum allowable additional flex weight, then the        flex mode is allowed, but a new maximum is set as 1.5× the final        load.    -   If 1.5× the final load is at or above base weight+the total        maximum allowable additional flex weight, then dynamic loading        is resumed according to the original resistance curve function.

In some embodiments, the exercise machine provides a burnout mode, whichis a subset of the spotter. However, in contrast to spotter mode, inburnout mode, the load is not increased or brought back up again afterthe end of a repetition (for the next repetition). That is, in burnoutmode, similar to spotter mode, the load is reduced. However, whereasspotter brings the load back up at the start of the next repetition,burnout mode does not. Rather, the load is left the same, and is onlyreduced.

In some embodiments, if spotting occurs, the base weight or suggestedweight for future sets is lowered (but the shape of the load curve fordynamic loading remains the same).

Example Metrics

Various metrics are computed to capture the performance of the user'sexercise. In some embodiments, the metrics take into account the dynamicloading described herein. For example, the metrics are computed in amanner that takes into account that the load that is resisting theuser's motion is varying. The following are example metrics that takeinto account varying applied resistance.

Volume:

In some embodiments, without a dynamic load, the volume (of weight) iscomputed as the number of repetitions times the weight. However, withdynamic loading, the effective weight of the load is varying through therepetition. In this case, integration is performed to determine thetotal volume of weight that the user resisted when performing theexercise. For example, the load weight is integrated over therepetition, and the average over distance, instead of time, is used. Insome embodiments, an integral need not be used. For example, given aload curve, a simplifying assumption is made that the user performstheir full range of motion (going between 0% to 100%) (even if they donot actually go through the entire range of motion, or if they go beyondthe upper or lower bounds of the range of motion in terms of cableposition/displacement).

One Rep Max:

In some embodiments, an effective equivalent for one rep max is computedas base weight+a portion of max allowable additional flex weight (e.g.,0.35*maximum allowable amount of additional flex weight).

Further simplifying assumptions may be used to compute volume and onerep max in the presence of spotting. For example, the maximum spottedweight observed throughout the repetition is taken. This maximum spottedweight is assumed to have existed for the entire repetition (even thoughthis may not be the case in reality).

Power/Work:

In some embodiments, the user's power is computed as instantaneous speedtimes force. Even though the force may be varying in flex mode, it isthe instantaneous force that is used to compute power. With respect towork, in some embodiments, the work is calculated as the time integralof power.

FIG. 8 is a flow diagram illustrating an embodiment of a process fordynamic loading. In some embodiments, process 800 is executed by dynamicloading engine 220 of FIG. 2. The process begins at 802 when progresswithin a given state of an exercise is determined. For example, thegiven state of the exercise is determined by performing repetition phasedetection, as described above. In some embodiments, the progress withinthe determined phase is determined as a percentage range of motion,which may be determined based on a cable displacement in a cableexercise machine such as the digital strength trainer described above.At 804, force generated by a motor is controlled as a function of theprogress within the given state of the exercise. For example, asdescribed above, a resistance curve for the type of exercise beingperformed by the user is received. Examples of resistance curvesincluding ascending, descending, mid-peak, and flat, as described above.The resistance curve corresponding to the type of exercise may beobtained by performing a lookup of a movement library, an example ofwhich is described in conjunction with Table 2. For example, themovement being or to be performed is looked up in the movement library.The corresponding type of resistance curve to be applied is obtained. Insome embodiments, the resistance curve is a mapping between theresistance to be applied and the progress within the given phase of theexercise. For example, as described above, the progress within the givenphase of the exercise is determined as the percentage range of progresswithin a given phase of the exercise. In some embodiments, thepercentage range of motion is determined based on cable lengthmeasurements (e.g., the amount that a cable is displaced duringperformance of the exercise, which is monitored throughout therepetition). For example, the range of motion is defined as a differencebetween an observed maximum and minimum extent/displacement of a cablewhen the movement is being performed. The percentage range of motion isdetermined as the current proportion of the range of motion that hasbeen covered by the user. For example, as the user, as a part ofperforming the exercise, pulls or lets back in the cable coupled betweenan actuator and a motor of the exercise machine, sensors of the exercisemachine are used to determine cable displacement or length. The sensormeasurements are used to determine the progress of the exercise withinthe given state of the exercise. Examples of sensors include optical,electromagnetic, and camera sensors. The motor of the exercise machineprovides resistive force to the user by transmitting the force to theactuator. For example, the force is transmitted to the actuator via atransmission. In some embodiments, the transmission includes systems ofcables, pulleys, levers, differentials, etc., as described above. Insome embodiments, a user engages with the actuator (e.g., pushes, pullson, etc.), where examples of actuators include handles, bars, ropes,pedals, etc. The force may be transmitted to the actuator via the cable.In some embodiments, the cable is directly connected to the motor. Theresistance curve indicates, for a given phase of the exercise (e.g.,concentric or eccentric), and the progress through the given phase(e.g., current percentage range of motion), what resistance (e.g., loadforce or weight) to be applied. Based on the resistance specified by theresistance curve, the force generated by the motor of the exercisemachine is controlled (e.g., by sending a signal to a motor controllerthat adjusts the torque of the motor according to the resistancecomputed as a function of the progress within the given state of theexercise and the resistance curve profile corresponding to themovement).

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive.

What is claimed is:
 1. An exercise machine, comprising: a motorconfigured to generate a force; a cable coupled between the motor and anactuator; a sensor configured to sense progress of an exercise within agiven state of the exercise; and a motor controller configured tocontrol the force generated by the motor as a function of the progressof the exercise within the given state.
 2. The exercise machine of claim1, wherein the given state of the exercise is determined based on apreviously observed exercise repetition of a given user.
 3. The exercisemachine of claim 1, wherein the progress within the given state of theexercise is determined based at least in part on a position of theactuator.
 4. The exercise machine of claim 3, wherein the position ofthe actuator is based at least in part on a measurement of a length ofthe cable.
 5. The exercise machine of claim 1, wherein the forcegenerated by the motor is determined according to a resistance curve. 6.The exercise machine of claim 5, wherein the resistance curve specifies,for the given state of the exercise, and the progress within the givenstate of the exercise, a corresponding amount of force to provide. 7.The exercise machine of claim 5, wherein the resistance curve comprisesat least one of an ascending resistance curve, a descending resistancecurve, a mid-peak resistance curve, or a flat resistance curve.
 8. Theexercise machine of claim 5, wherein the resistance curve is received atleast in part by querying a movement library.
 9. The exercise machine ofclaim 1, wherein the given state of the exercise comprises one of aconcentric phase of a repetition or an eccentric phase of therepetition.
 10. The exercise machine of claim 1, wherein the progresswithin the given state of the exercise is determined at least in part bydetermining a percentage range of motion.
 11. A method, comprising:determining, based at least in part on a set of sensor measurements,progress within a given state of an exercise; and controlling, as afunction of the progress within the given state of the exercise, a forcegenerated by a motor of an exercise machine, wherein the exercisemachine comprises a cable coupled between the motor and an actuator. 12.The method of claim 11, wherein the given state of the exercise isdetermined based on a previously observed exercise repetition of a givenuser.
 13. The method of claim 11, wherein the progress within the givenstate of the exercise is determined based at least in part on a positionof the actuator.
 14. The method of claim 13, wherein the position of theactuator is based at least in part on a measurement of a length of thecable.
 15. The method of claim 11, wherein the force generated by themotor is determined according to a resistance curve.
 16. The method ofclaim 15, wherein the resistance curve specifies, for the given state ofthe exercise, and the progress within the given state of the exercise, acorresponding amount of force to provide.
 17. The method of claim 15,wherein the resistance curve comprises at least one of an ascendingresistance curve, a descending resistance curve, a mid-peak resistancecurve, or a flat resistance curve.
 18. The method of claim 15, whereinthe resistance curve is received at least in part by querying a movementlibrary.
 19. The method of claim 11, wherein the given state of theexercise comprises one of a concentric phase of a repetition or aneccentric phase of the repetition.
 20. The method of claim 11, whereinthe progress within the given state of the exercise is determined atleast in part by determining a percentage range of motion.